#include <stdio.h>


/**
 * 循环移位
 * 例如 : 0100 1011 左循环两位
 *        
 *   -:溢出位置  ?:补零位置
 *
 * = 第1步 通过移位 取后两位 和 前N位================
 *    010010 11?? ????
 *    ------ 
 *           ??01 0010 11
 *                     -- 
 * = 第二步 按位或运算 ====
 *   1100 0000
 * | 0001 0010
 * = 结果 1101 0010 =======
 *      
 */

int main()
{
    int x = 1073741834;
    int n = 2;
    //printf("%d",sizeof(int));
    printf("%d\n",x >> (32-n) );
    printf("%d\n",x << n );
    printf("%d\n",(x >> (32-n))|( x << n) );
    return 0;
}